package hamaster.jpbc.util;

import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.List;

/**
 * 随机生成对称加密密钥的工具类
 * @author <a href="mailto:wangyeee@gmail.com">Wang Ye</a>
 */
public final class SymmetricKeyGenerator {

	private SymmetricKeyGenerator() {
	}

	/**
	 * 生成指定个数的密钥列表
	 * @param counts 密钥个数
	 * @param length 单个密钥的长度
	 * @return 密钥列表
	 */
	public final static List<byte[]> generateKeys(int counts, int length) {
		List<byte[]> keys = new ArrayList<byte[]>(counts);
		for (int i = 0; i < counts; i++)
			keys.add(i, nextKey(length));
		return keys;
	}

	/**
	 * 生成一个密钥
	 * @param length 密钥的长度 单位byte
	 * @return 生成的密钥
	 */
	public final static byte[] nextKey(int length) {
		SecureRandom random = new SecureRandom();
		byte[] key = new byte[length];
		random.nextBytes(key);
		return key;
	}
}
